package com.txk.mybatisplus.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;

import java.util.Date;

/**
 * @description:
 * @Author: my.yang
 * @Date: 2022/11/4 4:35 PM
 */
@Data
public class User {

    /**
     * mp自带策略底层使用雪花算法实现
     * IdType.AUTO          :   自动增长
     * IdType.ID_WORKER     :   mp自带策略会生成一个19位的值(针对数字类型生效)
     * IdType.ID_WORKER_STR :   mp自带策略会生成一个19位的值(针对字符串生效)
     * IdType.INPUT         :   自己输入,外部输入时一般使用此策略
     * IdType.NONE          :   外部输入
     * IdType.UUID          :   生成随记唯一的值
     */
    @TableId(type = IdType.ID_WORKER)
    private Long id;
    private String name;
    private Integer age;
    private String email;

    /**
     * 数据版本号
     */
    @Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;

    /**
     * 逻辑删除标识字段
     */
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;

    /**
     * 字段命名使用驼峰式,底层会自动拆解为field_field
     * FieldFill.INSERT         :   添加时有值
     * FieldFill.DEFAULT        :   默认不填充
     * FieldFill.UPDATE         :   更新时有值
     * FieldFill.INSERT_UPDATE  :   添加或更新时有值
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}
